An error correction coded codeword is composed of a user portion and a parity portion. A code rate is defined as a number of user data symbols in a codeword divided by a total number of symbols in the codeword. Lower code rates have stronger protection against errors than higher code rates, but at a cost of more parity overhead. Furthermore, iterative decoding of codewords with different code rates poses challenges to a code rate adjustment policy. The different code rates result in different decoding times that vary with both the code rate and an input raw bit error rate. On-the-fly decoding failure rates should also be kept low to meet throughput performance targets if retries are involved.